Übung Wörterbuch Standard
◦
?
Lernziele
Wiederholungsfragen
Ein Klick auf den roten Hyperlink zeigt die richtige Lösung.
-
Welche Aussage ist richtig?
- In Datenfeldern müssen alle Elemente dieselbe Grösse haben und in
einem zusammenhängenden Speicherbereich gespeichert werden.
- In verketteten Strukturen müssen alle Elemente dieselbe Grösse
haben. Sie müssen aber nicht in einem zusammenhängenden Speicherbereich gespeichert
werden.
- In verketteten Strukturen können die Elemente verschiedene Grösse
haben. Sie müssen aber in einem zusammenhängenden Speicherbereich gespeichert werden.
- Sowohl in Datenfeldern als auch in verketteten Strukturen können
die Elemente verschiedene Grösse haben, und sie müssen nicht in einem zusammenhängenden
Speicherbereich gespeichert werden.
-
Welche Höhe hat ein ausbalancierter Binärbaum mit 31 Knoten?
- 30
- 31
- 32
- 4
-
Welche der folgenden Binärbäume sind sortiert?
-

-

-

-

-

-
Welche der folgenden Binärbäume sind ausbalanciert?
-

-

-

-

-

-
Skizzieren Sie die Binärbäume, die entstehen, wenn Sie die folgenden Buchstaben
in der angegebenen Reihenfolge in einen leeren sortierten Binärbaum einfüllen.
- x, v, s, r, o, e, n
- r, v, e, x, s, o, n
- n, o, s, x, e, v, r
-
Welche Aussage ist falsch? Bei
einem rekursiven Algorithmus ...
- ... müssen die Abbruchbedingungen vor einem rekursiven Aufruf
geprüft werden.
- ... muss der Basisfall die Rekursion abbrechen.
- ... muss die Reduktion vor dem Basisfall geprüft werden.
- ... muss der rekursive Aufruf die Aufgabe
vereinfachen.
Vertiefungsfragen
Bevor wir mit der eigentlichen Aufgabe beginnen, lernen wir den Debugger noch etwas besser kennen. Lösen Sie dazu die Aufgabe
Verkettete
Liste debuggen.
Wir implementieren eine einfache Variante unseres Wörterbuchs 'Deutsch-Englisch' für
Fachbegriffe. Das nächste Bild zeigt die Benutzerschnittstelle der Arbeitsmappe
WoerterbuchStandardSkelett.xls.

- 'füge hinzu' einen neuen Eintrag (Begriff/Definitions-Paar) ins
Wörterbuch ein.
- 'übersetze' gibt die Definition zu einem Begriff
zurück.
Aufgaben
-
Öffnen Sie die Arbeitsmappe WoerterbuchStandardSkelett.xls,
und machen Sie sich mit ihrem Inhalt vertraut:
- Welche Namen haben die hellblauen Bereiche?
- Welche Prozeduren sind den beiden Schaltflächen zugeordnet?
- Aus welchen Modulen setzt sich das Projekt zusammen?
- In welchem Modul befinden sich die Ereignisprozeduren?
- Welche Aufgaben haben die restlichen Module?
-
Wechseln Sie in die Programmierumgebung, und betrachten Sie das Klassenmodul
cWörterbuch:
- Notieren Sie alle Eigenschaften und Methoden der Klasse cWörterbuch.
- Beschreiben Sie den Unterschied zwischen den drei Prozeduren
fügeHinzu(), fügeHinzuIt() und
fügeHinzuRek(). Welche Unterschiede in den Prozedurköpfen stellen
Sie fest?
- Beschreiben Sie den Unterschied zwischen den beiden Prozeduren
Eintrag() und
EintragRekursiv(). Welche Unterschiede in den Prozedurköpfen stellen Sie fest?
- Schreiben Sie den Programmcode der Prozedur
erzeugeKindRechts().
-
Wechseln Sie ins Modul Prozeduren, und vervollständigen Sie den
Programmcode:
- Beschreiben Sie die Funktion der Prozedur
initialisiere(), und
fügen Sie die fehlende Programmzeile ein.
- Beschreiben Sie die Funktion von
fügeHinzu_Klick(), und
ergänzen Sie den Programmcode.
- Beschreiben Sie die Funktion von
übersetze_Klick(), und
ergänzen Sie den Programmcode.
-
Testen und studieren Sie die beiden Implementationen des Einfügealgorithmus.
- Wechseln Sie ins Modul cWörterbuch, und überzeugen Sie sich, dass
die Methode fügeHinzu() die iterative Version des Einfügealgorithmus aufruft. Setzen Sie beim
Aufruf einen Haltepunkt, und legen Sie einen Überwachungsausdruck für die Variable Wurzel
fest.
Geben Sie über die Benutzerschnittstelle die
folgenden Begriffs/-Definitions-Paare ein. Beobachten Sie dabei den
Programmablauf mit dem Debugger und den Aufbau der Datenstruktur im
Überwachungsfenster:
kind/child, ast/branch, wurzel/root, knoten/node.
Welche Bedingung bricht den Algorithmus in den folgenden Fällen ab?
- wenn Sie das erste Mal ein Begriffspaar
eingeben
- wenn Sie ein weiteres Begriffspaar eingeben
- wenn Sie ein Begriffspaar zwei Mal eingeben
- Lassen Sie nun die Methode
fügeHinzu() die rekursive Version des
Einfügealgorithmus aufrufen, und beobachten Sie den Programmablauf erneut.
-
Entwerfen und implementieren Sie eine rekursive Prozedur
EintragRekursiv(), die einen
Begriff im Wörterbuch sucht und den gefundenen Eintrag zurück gibt.
- Schauen Sie sich zunächst den Aufruf der Prozedur
EintragRekursiv() in
der Methode Eintrag() an. Weshalb wird die Suche nicht direkt in der Methode
Eintrag()
implementiert?
- Notieren Sie ein paar Beispielbäume, die sich zum Testen des
Algorithmus eignen.
Entwerfen Sie einen rekursiven Algorithmus für die Suche
eines Begriffs im Baum. Verwenden Sie als Vorlage den Entwurfscode für das Hinzufügen, wie er im
Thema "rekursive
Algorithmen" vorgestellt wurde.
FügeHinzuRekursiv Begriff, Baum
'-- 1 Basisfall
Falls Baum leer
erzeuge Wurzelknoten
fülle Begriff ein
'-- 2 Reduktion
sonst
Falls Begriff < Begriff im Wurzelknoten von Baum
FügeHinzuRekursiv Begriff, linker Teilbaum von Baum
Falls Begriff > Begriff im Wurzelknoten
FügeHinzuRekursiv Begriff, rechter Teilbaum von Baum
- Implementieren Sie den Algorithmus.
- Testen Sie ihren Algorithmus anhand ihrer Beispielbäume. Geben Sie
dazu über die Benutzerschnittstelle einen (deutschen) Begriff ein und klicken anschliessend auf
'übersetzen'.
LWoerterbuch.xls
©abo